package com.sharelords.icp.web.util;

import org.apache.commons.lang.StringUtils;

/**
 * java资源文件处理工具
 *
 * @author 夜舞旋
 */
public class JavaFileSrcUtil {

    private JavaFileSrcUtil() {
    }

    /**
     * 获取全限定名
     *
     * @param fileSrc java资源文件
     * @return
     */
    public static String getFileName(String fileSrc) {
        if (StringUtils.isBlank(fileSrc)) {
            return "";
        }

        String packageName = getPackageName(fileSrc);
        if (StringUtils.isBlank(packageName)) {
            return getClassSimpleName(fileSrc);
        }

        return packageName + "." + getClassSimpleName(fileSrc);
    }

    /**
     * 获取包名
     *
     * @param fileSrc java资源文件
     * @return
     */
    private static String getPackageName(String fileSrc) {
        if (fileSrc.startsWith("package ")) {
            String packageName = fileSrc.substring(8, fileSrc.indexOf(";"));
            packageName = packageName.trim();
            if (StringUtils.isNotBlank(packageName) && !packageName.contains(" ")) {
                return packageName;
            }

            throw new RuntimeException("包名有误，请重新设置！");
        }

        return "";
    }

    /**
     * 获取类名
     *
     * @param fileSrc java资源文件
     * @return
     */
    private static String getClassSimpleName(String fileSrc) {
        int classClaimIndex = fileSrc.indexOf(" class ");
        int classFrameIndex = fileSrc.indexOf("{");
        if (classClaimIndex >= 0 && classClaimIndex < classFrameIndex) {
            String classSimpleName = fileSrc.substring(classClaimIndex + 7, classFrameIndex);
            classSimpleName = classSimpleName.trim();
            if (StringUtils.isNotBlank(classSimpleName) && !classSimpleName.contains(" ")) {
                return classSimpleName;
            }
        }

        throw new RuntimeException("class文件名定义有误，请仔细检查！");
    }

}
